Auto merge of #4299 - brson:home, r=alexcrichton
Replace homedir definition with home crate
This pulls out the definitions of these functions into a single crate, [home](https://github.com/brson/home), to act as their canonical definition.
This has a bigger impact on rustup, since it is using definitions of all these things, where cargo is just defining cargo_home in terms of std's wrong home_dir.
The [definition of cargo_home](https://github.com/brson/home/blob/master/src/lib.rs#L179) used here is slightly different than what cargo has today in that it contains a bit of defensive code to avoid allowing `CARGO_HOME` to be set to `.multirust/cargo` - this is backwards compatibility code from rustup.